home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / IP17.h.z / IP17.h
C/C++ Source or Header  |  1992-04-03  |  6KB  |  175 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *          Copyright (C) 1987, Silicon Graphics, Inc.          *
  4.  *                                      *
  5.  *  These coded instructions, statements, and computer programs  contain  *
  6.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  7.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  8.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  9.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  10.  *                                      *
  11.  **************************************************************************/
  12.  
  13. /*
  14.  * IP17.h -- cpu board specific defines for IP17
  15.  */
  16.  
  17. #ifndef __SYS_IP17_H__
  18. #define __SYS_IP17_H__
  19.  
  20. #ident "$Revision: 1.13 $"
  21.  
  22. #if !LOCORE
  23. #include "sys/types.h"
  24. #endif !LOCORE
  25.  
  26. /*
  27.  * IP17 CPU Board Addresses
  28.  */
  29. #define    LOCK_ADDR    0xbe000000    /* Lock array */
  30. #define    U_LOCK_ADDR    0xbe200000    /* Users' portion of lock array */
  31. #define    SBCC_ADDR    0xbe400000    /* SBCC chip */
  32. #define    LOCK_DIAGADDR    0xbec00000    /* Diagnostics lock array. */
  33. #define    U_LOCK_DIAGADDR    0xbee00000    /* Users' portion of " " " */
  34. #define MPSR_ADDR    0xbf000000    /* MP status register */
  35.  
  36. #define    TIM0_ACK_ADDR    0xbf100000    /* Clear T0 interrupt */
  37. #define    TIM1_ACK_ADDR    0xbf180000    /* Clear T1 interrupt */
  38.  
  39. #define    LED_ADDR    0xbf200001    /* LED register */
  40.  
  41. #define    PT_CLOCK_ADDR    0xbf600000    /* Timer chip */
  42. #define    DUART0_ADDR    0xbf800000    /* Keyword/mouse DUART */
  43. #define    DUART1_ADDR    0xbfa00000    /* Second DUART */
  44. #define DUART2_ADDR    0xbf400000    /* Third DUART (IP9 only) */
  45. #define    EPROM_ADDR    0xbfc00000    /* EPROM */
  46. #define    E2PROM_ADDR    0xbfe00000    /* EEPROM base addr */
  47. #define    E2ENDIAN_BYTE    0        /* EEPROM endian flag byte */
  48. #define    E2ENDIAN_BIT    0x4        /* 1 == big, 0 == lil */
  49. #define    E2SCSIZE_BYTE    32        /* EEPROM 2nd-cache-size byte follows
  50.                      * 256-bit (32-byte) bootstream */
  51. #define    E2SCSIZE_4MB    0xba        /* (char)0xba == 4meg, all else 1mb */
  52.  
  53. /* MP Status Register bits for IP17 */
  54. #define MPSR_MASK    0x003f        /* only keep interesting bits */
  55. #define MPSR_T1        0x0200        /* T1 interrupt pending == 1 */
  56. #define MPSR_T0        0x0100        /* T0 interrupt pending == 1 */
  57. #define MPSR_IDMASK    0x0060        /* MP bus ID# */
  58. #define    MPSR_MEMMASK    0x1f        /* Memory size mask */
  59. #define MPSR_ECCON    0x0080        /* RMI read ECC ON (IP17) */
  60.  
  61. /* Sub-defines for mpsr memsize field (mpsr 0..4) */
  62. #define MPSR_MEM_HBIT    0x10        /* 0: memsz = 16M * bits in LMASK */
  63.                     /* 1: memsz = 256M + 64M * LMASK */
  64. #define MPSR_MEM_LMASK    0xf        /* low bits give multiplier */
  65.  
  66. /* LED Register bits */
  67. #define    LED_3WAY    0x80        /* 3 Way disable bits */
  68. #define LED_MASK    0x7f        /* actual value */
  69.  
  70. /* Hardware lock entry */
  71. #define    LOCK_NUMPAGES    1024        /* number of pages of locks */
  72. #define    LOCK_NUMKPAGES    512        /* number of kernel pages of locks */
  73. #define    LOCK_NUMUPAGES    512        /* number of user pages of locks */
  74. #define    LOCK_PERPAGE    64        /* number of locks per page */
  75. #define    LOCK_TAKEN    0x1        /* least significant bit of value */
  76.  
  77. /* IP17 RMP registers */
  78. #define    RMPINTR_STATUS    0xbd800000    /* internal intr pend and intr status*/
  79. #define    RMPBERR_CLEAR    0xbd000000    /* clear internal level 4 intr bits */
  80. #define    RMPERR_ADDRHI    0xbc000000    /* bus-errored address bits 43..31 */
  81. #define    RMPERR_ADDRLO    0xbc000004    /* bus-errored address bits 31..0*/
  82. #define RMPEND_EBYTE_EL    0xbd800007    /* byte address of endian bit in le */
  83. #define RMPEND_EL    0x1        /* set RMP to little endian mode */
  84.  
  85. /* Bus error bit definitions for RMPINTR_STATUS */
  86. #define    RMPBERR_DMA    0x100        /* Bus error on dma */
  87. #define RMPBERR_IOEACK    0x80        /* IO EACK */
  88. #define RMPBERR_IOWACK    0x40        /* IO WACK */
  89. #define RMPBERR_RANGE    0x20        /* Addr > 4Gb */
  90. #define RMPBERR_MASK    0x1e0
  91.  
  92. /* primary interrupt sources */
  93. #define    RMP_INTR_MASK    0x1F        /* all possible sync bus bits */
  94.  
  95. #define    RMP_INT0_PEND    1        /* only sync bus sets this */
  96. #define RMP_SYNC_INT    RMP_INT0_PEND
  97.  
  98. #define    RMP_INT1_PEND    2        /* sync bus or RS232 */
  99. #define    RMP_RS232_INT    RMP_INT1_PEND
  100.  
  101. #define    RMP_INT2_PEND    4        /* sync bus or Timer 0 */
  102. #define    RMP_T0_INT    RMP_INT2_PEND
  103.  
  104. #define    RMP_INT3_PEND    8        /* sync bus or Timer 1 */
  105. #define    RMP_T1_INT    RMP_INT3_PEND
  106.  
  107. #define    RMP_INT4_PEND    0x10        /* sync bus or Internal */
  108. #define    RMP_INTERNAL    RMP_INT4_PEND
  109.  
  110. /* RMP Pseudo-3way registers needing to be saved & restored */
  111. #define RMP_P3WAY_CNTCMD ((unsigned long *)0xbb000004)
  112. #define RMP_P3WAY_A    ((unsigned long *)0xba000000)
  113. #define RMP_P3WAY_B    ((unsigned long *)0xba000004)
  114. #define RMP_P3WAY_C    ((unsigned long *)0xb9000000)
  115. #define RMP_P3WAY_D    ((unsigned long *)0xb9000004)
  116. #define RMP_P3WAY_BASE    ((unsigned long *)0xb8000000)
  117.  
  118. /* RMI control register and bit definitions */
  119. #define    RMI_CONTROL    0xbf080000
  120. #define    RMI_READECC    0x80        /* 0 --> ecc checking on */
  121. #define    RMI_REFRESH    0x40        /* 0 --> 25mhz refresh, 1 --> 50mhz */
  122.  
  123. /* GIO related defines */
  124. #define GDMA_HTOG    0x0000        /* DMA Mode: 0 = Host to Gfx */
  125. #define GDMA_GTOH    0x2000        /* DMA Mode: 1 = Gfx to Host */
  126.  
  127.  
  128. #if !LOCORE
  129. struct rmperr_addr {
  130.     union {
  131.         struct {
  132.             uint    :20,        /* XXX EL */
  133.                 r4kcmd:8,
  134.                 rmp_eaddr:4;
  135.         } rmperr_fields;
  136.         uint    rmperr_val;
  137.     } rmperr_addr_hi;
  138.     uint rmperr_addrlo;
  139. };
  140. #define rmperr_addrhi    rmperr_addr_hi.rmperr_fields.rmp_eaddr
  141. #define rmpr4k_cmd    rmperr_addr_hi.rmperr_fields.rk4cmd
  142. #define rmperr_word    rmperr_addr_hi.rmperr_val
  143. #endif    /* !LOCORE */
  144.  
  145. /*
  146.  * IP17 ECC error handler defines.
  147.  * Define an additional exception frame for the ECC handler.
  148.  * Save 3 more registers on this frame: C0_CACHE_ERR, C0_TAGLO,
  149.  * and C0_ECC.
  150.  * Call this an ECCF_FRAME.
  151.  */
  152. #define ECCF_CACHE_ERR    0
  153. #define ECCF_TAGLO    1
  154. #define ECCF_ECC    2
  155. #define ECCF_ERROREPC    3
  156. #define ECCF_PADDR    4
  157. #define ECCF_SIZE    (5 * 4)
  158.  
  159. #define    CAUSE_BERRINTR    CAUSE_IP7    /* Bus error intr. */
  160.  
  161.     /* Mask to remove SW bits from pte. Note that the high-order
  162.      * address bits are overloaded with SW bits, which limits the
  163.      * physical addresses to 32 bits. These are limited anyway because
  164.      * of the Clover2 backplane.
  165.      */
  166. #define    TLBLO_HWBITS        0x03ffffff    /* 20 bit ppn, plus CDVG */
  167. #define TLBLO_HWBITSHIFT    6        /* A shift value, for masking */
  168. #define TLBLO_PFNTOKDMSHFT    6        /* tlblo pfn to direct mapped */
  169.  
  170. #define SR_BERRBIT    SR_IBIT7
  171.  
  172. #include "sys/clover2.h"
  173.  
  174. #endif /* __SYS_IP17_H__ */
  175.